#define MAX_NOME 50
#define MAX_ENERGIA 50
#define MAX_COMANDO 21
#define MAX_CEL 11
#define MAX_DESCRICAO 500
#define MAX_ITEM_JOGADOR 3
#define MAX_ITEM_CELULA 6
#define MAX_ITEM_DESCRICAO 20

struct Jogador {

	char nome[MAX_NOME];
	int energia;
	int sala;
	int godLike;
	int tesouro;
	char item[MAX_ITEM_JOGADOR][MAX_ITEM_DESCRICAO];
	

}; // end of Jogador

struct Celula{

	int n, s, e, o, tesouro;
	char descricao[MAX_DESCRICAO];
	char item[MAX_ITEM_CELULA][MAX_ITEM_DESCRICAO];
};

struct Monstro{
	int energia;
	int sala;
};

void Inicializar_Jogador(struct Jogador *pJogador, int godLike);

void Listar_Jogador(struct Jogador *pJogador);

//Inicializar o mapa
void Inicializar_Mapa(struct Celula mapa[]);
void Inicializar_MapaTxt(struct Celula mapa[], char file[]);


void createBinaryMap(struct Celula mapa[]);

void Listar_Mapa(struct Celula mapa[]);

void Inicializar_Monstro(struct Monstro *pMonstro);
void Listar_Monstro(struct Monstro *pMonstro);

void moverMonstro(struct Monstro *pMonstro, struct Celula mapa[], int superuser);

void gameRules(struct Monstro *pMonstro, struct Celula mapa[], struct Jogador *pJogador, int superuser);

void gameFight(struct Monstro *pMonstro, struct Jogador *pJogador);

int verificarComando(char comando0[], char comando1[], struct Jogador *pJogador, struct Celula mapa[], struct Monstro *pMonstro);

void saveGame(struct Jogador *pJogador, struct Monstro *pMonstro, struct Celula mapa[]);
void saveGameBinario(struct Jogador *pJogador, struct Monstro *pMonstro, struct Celula mapa[]);

void loadGame(struct Jogador *pJogador, struct Monstro *pMonstro, struct Celula mapa[]);
bool loadGameBinario(struct Jogador *pJogador, struct Monstro *pMonstro, struct Celula mapa[]);

int Mover_Jogador(char comando[], struct Jogador *pJogador, struct Celula mapa[]);

void showInfo(struct Jogador* jogador, struct Celula mapa[]);
void noDoor();

int grabItem(struct Jogador* jogador, struct Celula mapa[], char comando1[]);
int dropItem(struct Jogador* pJogador, struct Celula mapa[], char comando2[]);

void inventory(struct Jogador* jogador);

void whereAmI(struct Jogador* jogador, struct Celula mapa[]);


void inicializarBinaryMap(struct Celula mapa[]);

int playGame(struct Jogador *pJogador, struct Celula mapa[], struct Monstro *pMonstro, int superuser);